The invention relates to storing firmware in read only memories (ROM).
Computer systems use ROMs (and other nonvolatile semiconductor memories such as PROMs and EPROMs) to store firmware for use in initializing and configuring a system or system components during the start-up process.
ROMs are available in fixed sizes. In determining the ROM size, the hardware designer accounts for expected firmware revisions that can increase size requirements.
Adapter boards are examples of computer hardware that store firmware in ROMs. These boards are inserted into a computer system and add specific functionality to a system. An example of this is a board that enhances a system's graphics capabilities. When a system powers on or initializes, the system executes the firmware on the adapter board. The firmware typically configures and initializes the adapter board, and serves as a runtime device driver. Developers of adapter boards anticipate firmware upgrades and tend to incorporate ROMs larger than necessary to ensure that the hardware can accommodate future upgrades. Providing a larger ROM bears a greater cost, but reduces the risk that the board has inadequate ROM capacity.
Considering the numerous operating systems and hardware systems on the market, vendors of adapter boards strive for cross-platform compatibility. In doing so, they adopt industry standards.
Peripheral Component Interconnect (PCI) adapter boards conform to the OpenFirmware standard to configure the boards at start-up. They do this via a firmware driver written in FCode, which is a machine-independent language and based on Forth language semantics. The firmware resides in memory on an adaptor board.
Computer systems that support PCI adapter boards and adhere to the OpenFirmware standard provide FCode interpreters. When the host system powers on or initializes, it interprets the FCode program on the adapter board as it reads the program from ROM. The FCode program initializes and configures the adapter board. The program also controls the runtime behavior of the adapter board.